{
 "metadata": {
  "name": "",
  "signature": "sha256:c8e07bf076942b49cca564e3fc3307b6c984a67f0e90600982367aa07c349658"
 },
 "nbformat": 3,
 "nbformat_minor": 0,
 "worksheets": [
  {
   "cells": [
    {
     "cell_type": "heading",
     "level": 1,
     "metadata": {},
     "source": [
      "Learning Scikit-learn: Machine Learning in Python"
     ]
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "IPython Notebook for Chapter 1: A Gentle Introduction to Machine Learning"
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "_In this chapter, we show (using a very simple example) the general form of training and evaluating a classifier, using scikit-learn. We will use the Iris flower dataset, introduced in 1936 by Sir Ronald Fisher to show how a statistical method (discriminant analysis) worked._"
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "Start by importing numpy, scikit-learn, and pyplot, the Python libraries we will be using in this chapter. Show the versions we will be using (in case you have problems running the notebooks)."
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "%pylab inline\n",
      "import IPython\n",
      "import sklearn as sk\n",
      "import numpy as np\n",
      "import matplotlib\n",
      "import matplotlib.pyplot as plt\n",
      "\n",
      "print 'IPython version:', IPython.__version__\n",
      "print 'numpy version:', np.__version__\n",
      "print 'scikit-learn version:', sk.__version__\n",
      "print 'matplotlib version:', matplotlib.__version__\n"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Populating the interactive namespace from numpy and matplotlib\n",
        "IPython version: 2.1.0\n",
        "numpy version: 1.8.2\n",
        "scikit-learn version: 0.15.1\n",
        "matplotlib version: 1.3.1\n"
       ]
      }
     ],
     "prompt_number": 1
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "Every method implemented on scikit-learn assumes that data comes in a dataset. Scikit-learn includes a few well-known datasets. The Iris flower dataset includes information about 150 instances from three different Iris flower species, including sepal and petal length and width. The natural task to solve using this dataset is to learn to guess the Iris species knowing the sepal and petal measures. Let's import the dataset and show the values for the first instance:"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "from sklearn import datasets\n",
      "iris = datasets.load_iris()\n",
      "X_iris, y_iris = iris.data, iris.target\n",
      "print X_iris.shape, y_iris.shape\n",
      "print X_iris[0], y_iris[0]\n"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "(150, 4) (150,)\n",
        "[ 5.1  3.5  1.4  0.2] 0\n"
       ]
      }
     ],
     "prompt_number": 2
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "The dataset includes 150 instances, with 4 attributes each. Our first step will be to separate the dataset into to separate sets, using 75% of the instances for training our classifier, and the remaining 25% for evaluating it (and, in this case, taking only two features, sepal width and length). We will also perform _feature scaling_: for each feature, calculate the average, subtract the mean value from the feature value, and divide the result by their standard deviation. After scaling, each feature will have a zero average, with a standard deviation of one. This standardization of values (which does not change their distribution, as you could verify by plotting the X values before and after scaling) is a common requirement of machine learning methods, to avoid that features with large values may weight too much on the final results."
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "from sklearn.cross_validation import train_test_split\n",
      "from sklearn.preprocessing import StandardScaler\n",
      "\n",
      "# Get dataset with only the first two attributes\n",
      "X, y = X_iris[:,:2], y_iris\n",
      "# Split the dataset into a trainig and a testing set\n",
      "# Test set will be the 25% taken randomly\n",
      "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=33)\n",
      "print X_train.shape, y_train.shape\n",
      "# Standarize the features\n",
      "scaler = StandardScaler().fit(X_train)\n",
      "X_train = scaler.transform(X_train)\n",
      "\n",
      "X_test = scaler.transform(X_test)\n",
      "\n"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "(112, 2) (112,)\n"
       ]
      }
     ],
     "prompt_number": 3
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "Let's plot the training data using pyplot"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "\n",
      "colors = ['red', 'greenyellow', 'blue']\n",
      "for i in xrange(len(colors)):\n",
      "    px = X_train[:, 0][y_train == i]\n",
      "    py = X_train[:, 1][y_train == i]\n",
      "    plt.scatter(px, py, c=colors[i])\n",
      "\n",
      "plt.legend(iris.target_names)\n",
      "plt.xlabel('Sepal length')\n",
      "plt.ylabel('Sepal width')"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 4,
       "text": [
        "<matplotlib.text.Text at 0x107661d10>"
       ]
      },
      {
       "metadata": {},
       "output_type": "display_data",
       "png": "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\n/wHn1Ia2HAtWJAAAAABJRU5ErkJggg==\n",
       "text": [
        "<matplotlib.figure.Figure at 0x107623e50>"
       ]
      }
     ],
     "prompt_number": 4
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "Note that setosa is easily separable from the other two classes, while versicolor and virginica are pretty messed... To implement linear classification, we will use the SGDClassifier from scikit-learn. SGD stands for Stochastic Gradient Descent, a very popular numerical procedure to find the local minimum of a function (in this case, the loss function, which measures how far every instance is from our boundary). The algorithm will learn the coefficients of the hyperplane by minimizing the loss function. Let's fit a Linear Classification method to our training data, and show the built hyperplane:"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "# create the linear model classifier\n",
      "from sklearn.linear_model import SGDClassifier\n",
      "clf = SGDClassifier()\n",
      "# fit (train) the classifier\n",
      "clf.fit(X_train, y_train)\n",
      "# print learned coeficients\n",
      "print clf.coef_\n",
      "print clf.intercept_"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "[[-28.56232699  15.06870628]\n",
        " [ -8.94402784  -8.14000854]\n",
        " [ 14.04159132 -12.8156682 ]]\n",
        "[-17.62477802  -2.35658325  -9.7570213 ]\n"
       ]
      }
     ],
     "prompt_number": 5
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "Plot the three calculated decision curves. Note that Class 0 is linearly separable, while Class 1 and Class 2 are not"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "x_min, x_max = X_train[:, 0].min() - .5, X_train[:, 0].max() + .5\n",
      "y_min, y_max = X_train[:, 1].min() - .5, X_train[:, 1].max() + .5\n",
      "xs = np.arange(x_min,x_max,0.5)\n",
      "fig, axes = plt.subplots(1,3)\n",
      "fig.set_size_inches(10,6)\n",
      "for i in [0,1,2]:\n",
      "    axes[i].set_aspect('equal')\n",
      "    axes[i].set_title('Class ' + str(i) + ' versus the rest')\n",
      "    axes[i].set_xlabel('Sepal length')\n",
      "    axes[i].set_ylabel('Sepal width')\n",
      "    axes[i].set_xlim(x_min, x_max)\n",
      "    axes[i].set_ylim(y_min, y_max)\n",
      "    plt.sca(axes[i])\n",
      "    for j in xrange(len(colors)):\n",
      "        px = X_train[:, 0][y_train == j]\n",
      "        py = X_train[:, 1][y_train == j]\n",
      "        plt.scatter(px, py, c=colors[j])\n",
      "    ys = (-clf.intercept_[i]-xs*clf.coef_[i,0])/clf.coef_[i,1]\n",
      "    plt.plot(xs,ys,hold=True)\n",
      "    \n"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "display_data",
       "png": "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\nHdC3jm9yAAAAAElFTkSuQmCC\n",
       "text": [
        "<matplotlib.figure.Figure at 0x107d7ec50>"
       ]
      }
     ],
     "prompt_number": 6
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "Let's how our classifier can predict the class of a certain instance, given its sepal length and width:"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "print clf.predict(scaler.transform([[4.7, 3.1]]))\n",
      "print clf.decision_function(scaler.transform([[4.7, 3.1]]))"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "[0]\n",
        "[[ 19.77232705   8.13983962 -28.65250296]]\n"
       ]
      }
     ],
     "prompt_number": 7
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "Let's see how good our classifier is on our training set, measuring accuracy:"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "from sklearn import metrics\n",
      "y_train_pred = clf.predict(X_train)\n",
      "print metrics.accuracy_score(y_train, y_train_pred)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "0.821428571429\n"
       ]
      }
     ],
     "prompt_number": 8
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "To get a better idea of the expected performance of our classifier on unseen data, que must measure  accuracy on the testing set"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "y_pred = clf.predict(X_test)\n",
      "print metrics.accuracy_score(y_test, y_pred)\n"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "0.684210526316\n"
       ]
      }
     ],
     "prompt_number": 9
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "Let's try some additinoal measures: Precision, Recall and F-score, and show the confusion matrix"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "print metrics.classification_report(y_test, y_pred, target_names=iris.target_names)\n",
      "print metrics.confusion_matrix(y_test, y_pred)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "             precision    recall  f1-score   support\n",
        "\n",
        "     setosa       1.00      1.00      1.00         8\n",
        " versicolor       0.43      0.27      0.33        11\n",
        "  virginica       0.65      0.79      0.71        19\n",
        "\n",
        "avg / total       0.66      0.68      0.66        38\n",
        "\n",
        "[[ 8  0  0]\n",
        " [ 0  3  8]\n",
        " [ 0  4 15]]\n"
       ]
      }
     ],
     "prompt_number": 10
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "Now, let's try cross-validation: divide the dataset into n parts, train on n-1 and evaluate on the remaining one; do this n times and take the mean. We will, for this, create a new classifier: a pipeline of the standarizer and the linear model. Measure the cross-validation accuracy for each fold:"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "from sklearn.cross_validation import cross_val_score, KFold\n",
      "from sklearn.pipeline import Pipeline\n",
      "\n",
      "# create a composite estimator made by a pipeline of the standarization and the linear model\n",
      "clf = Pipeline([\n",
      "        ('scaler', StandardScaler()),\n",
      "        ('linear_model', SGDClassifier())\n",
      "])\n",
      "# create a k-fold croos validation iterator of k=5 folds\n",
      "cv = KFold(X.shape[0], 5, shuffle=True, random_state=33)\n",
      "# by default the score used is the one returned by score method of the estimator (accuracy)\n",
      "scores = cross_val_score(clf, X, y, cv=cv)\n",
      "print scores\n",
      "\n"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "[ 0.73333333  0.63333333  0.73333333  0.66666667  0.6       ]\n"
       ]
      }
     ],
     "prompt_number": 11
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "Calculate the mean and standard error of cross-validation accuracy"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "from scipy.stats import sem\n",
      "\n",
      "def mean_score(scores):\n",
      "    \"\"\"Print the empirical mean score and standard error of the mean.\"\"\"\n",
      "    return (\"Mean score: {0:.3f} (+/-{1:.3f})\").format(\n",
      "        np.mean(scores), sem(scores))\n",
      "\n",
      "print mean_score(scores)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Mean score: 0.673 (+/-0.027)\n"
       ]
      }
     ],
     "prompt_number": 12
    }
   ],
   "metadata": {}
  }
 ]
}
